-all_media_backends = [
- 'ffmpeg',
- 'gstreamer'
-]
-
-enabled_media_backends = get_option('media').split(',')
-
-if enabled_media_backends.contains('none')
- media_backends = []
-elif enabled_media_backends.contains('all')
- media_backends = all_media_backends
-else
- media_backends = []
- foreach b: enabled_media_backends
- if all_media_backends.contains(b)
- media_backends += b
- else
- error('No media backend named "@0@" exists.'.format (b))
- endif
- endforeach
-endif
-
media_subdir = 'gtk-4.0/@0@/media'.format(gtk_binary_version)
media_install_dir = join_paths(get_option('libdir'), media_subdir)
+media_backends = []
extra_c_args = [
'-DGTK_COMPILATION',
extra_c_args += common_cflags
-if media_backends.contains('ffmpeg')
- libavfilter_dep = dependency('libavfilter', version: '>= 6.47.100', required: true)
- libavformat_dep = dependency('libavformat', version: '>= 57.41.100', required: true)
- libavcodec_dep = dependency('libavcodec', version: '>= 57.48.101', required: true)
- libavutil_dep = dependency('libavutil', version: '>= 55.28.100', required: true)
- libswscale_dep = dependency('libswscale', version: '>= 4.6.100', required: true)
- ffmpeg_deps = [libavfilter_dep, libavformat_dep, libavcodec_dep, libavutil_dep, libswscale_dep]
+ffmpeg_opt = get_option('media-ffmpeg')
+ffmpeg_versions = {
+ 'libavfilter': '>= 6.47.100',
+ 'libavformat': '>= 57.41.100',
+ 'libavcodec': '>= 57.48.101',
+ 'libavutil': '>= 55.28.100',
+ 'libswscale': '>= 4.6.100',
+}
+ffmpeg_deps = []
+ffmpeg_found = true
+foreach name, version : ffmpeg_versions
+ dep = dependency(name, version: version, required: ffmpeg_opt)
+ ffmpeg_deps += dep
+ if not dep.found()
+ ffmpeg_found = false
+ break
+ endif
+endforeach
+
+if ffmpeg_found
+ media_backends += 'ffmpeg'
cdata.set('HAVE_FFMPEG', 1)
-
shared_module('media-ffmpeg',
'gtkffmediafile.c',
c_args: extra_c_args,
install : true)
endif
-if media_backends.contains('gstreamer')
- gstplayer_dep = dependency('gstreamer-player-1.0', version: '>= 1.12.3', required: true)
+gstplayer_dep = dependency('gstreamer-player-1.0', version: '>= 1.12.3',
+ required: get_option('media-gstreamer'))
+if gstplayer_dep.found()
+ media_backends += 'gstreamer'
cdata.set('HAVE_GSTREAMER', 1)
-
shared_module('media-gstreamer',
'gtkgstmediafile.c',
'gtkgstpaintable.c',
-all_print_backends = [
- 'cups',
- 'cloudprint',
-]
-
-enabled_print_backends = get_option('print').split(',')
-
-if enabled_print_backends.contains('none')
- enabled_print_backends = []
-elif enabled_print_backends.contains('all')
- enabled_print_backends = all_print_backends
-endif
-
-# The 'file' print backend cannot be disabled
-print_backends = ['file']
-
-# Checks to see if we should compile with CUPS backend for GTK
-enable_cups = enabled_print_backends.contains('cups')
-if enable_cups
- cups_dep = dependency('cups', version : '>=2.0', required: true)
- print_backends += ['cups']
-endif
-
-# Checks to see if we should compile with cloudprint backend for GTK
-enable_cloudprint = enabled_print_backends.contains('cloudprint')
-if enable_cloudprint
- rest_dep = dependency('rest-0.7', required : true)
- json_glib_dep = dependency('json-glib-1.0', required : true)
- if rest_dep.found() and json_glib_dep.found()
- print_backends += ['cloudprint']
- endif
-endif
+print_backends = []
if not cc.has_header('cairo-pdf.h', dependencies : cairo_dep)
error('Cannot find cairo-pdf.h. You must build Cairo with the pdf backend enabled.')
endif
endif
-# Automatic fall-back to the lpr backend
-if not print_backends.contains('cups')
- print_backends += ['lpr']
-endif
-
printbackends_subdir = 'gtk-4.0/@0@/printbackends'.format(gtk_binary_version)
printbackends_install_dir = join_paths(get_option('libdir'), printbackends_subdir)
'-D_GLIB_EXTERN=@0@'.format(visibility_define),
] + common_cflags
-if print_backends.contains('cups')
+cups_dep = dependency('cups', version : '>=2.0', required: get_option('print-cups'))
+if cups_dep.found()
+ print_backends += 'cups'
shared_module('printbackend-cups',
'gtkprintbackendcups.c',
'gtkprintercups.c',
dependencies: [libgtk_dep, cups_dep, colord_dep],
install_dir: printbackends_install_dir,
install : true)
+else
+ # Automatic fall-back to the lpr backend
+ print_backends += 'lpr'
+ shared_module('printbackend-lpr',
+ 'gtkprintbackendlpr.c',
+ c_args: printbackends_args,
+ dependencies: libgtk_dep,
+ install_dir: printbackends_install_dir,
+ install : true)
endif
-if print_backends.contains('cloudprint')
+rest_dep = dependency('rest-0.7', required : get_option('print-cloudprint'))
+json_glib_dep = dependency('json-glib-1.0', required : get_option('print-cloudprint'))
+if rest_dep.found() and json_glib_dep.found()
+ print_backends += ['cloudprint']
shared_module('printbackend-cloudprint',
'gtkprintbackendcloudprint.c',
'gtkprintercloudprint.c',
install : true)
endif
-if print_backends.contains('file')
- shared_module('printbackend-file',
- 'gtkprintbackendfile.c',
- c_args: printbackends_args,
- dependencies: libgtk_dep,
- install_dir: printbackends_install_dir,
- install : true)
-endif
-
-if print_backends.contains('lpr')
- shared_module('printbackend-lpr',
- 'gtkprintbackendlpr.c',
- c_args: printbackends_args,
- dependencies: libgtk_dep,
- install_dir: printbackends_install_dir,
- install : true)
-endif
+# The 'file' print backend cannot be disabled
+print_backends += 'file'
+shared_module('printbackend-file',
+ 'gtkprintbackendfile.c',
+ c_args: printbackends_args,
+ dependencies: libgtk_dep,
+ install_dir: printbackends_install_dir,
+ install : true)